<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        // 用于修改函数的this指向

        // call(新的this指向 , [参数1 ，参数2 ...])     
        //    第一个参数表示新的this指向
        //    后面的参数都是给前面函数的


        // apply(新的this指向 , [数组传参])
        //    第一个参数表示新的this指向
        //    第二个参数必须是数组  数组中的值都是用来给前面函数的


        // bind()
        //    修改this指向，但是不会执行函数



        var name = 'cc';

        function f(a, b) {
            console.log(a + b);
            console.log(this);   // window
            console.log(this.name);
        }

        const obj = {
            name: 'yy'
        }

        // f(1);   // cc


        // f.call(obj, 2 , 3);   // yy


        // f.apply(obj, [3, 4])




        // f.bind(obj)(3, 4)

        // f.bind(obj, 3, 4)()


        // setTimeout(f.bind(obj), 1000)

        // function f() {
        //     console.log(this.name);
        // }


        setTimeout(function () {
            console.log(this.name);
        }.bind(obj), 100)


    </script>

</body>

</html>